home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / Utilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  7.2 KB  |  389 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.FontMetrics;
  4. import java.awt.Graphics;
  5. import java.awt.Rectangle;
  6. import java.lang.reflect.Method;
  7. import java.text.BreakIterator;
  8.  
  9. public class Utilities {
  10.    static boolean is1dot2 = false;
  11.    // $FF: synthetic field
  12.    static Class class$java$awt$Toolkit;
  13.  
  14.    static {
  15.       try {
  16.          Method var0 = (class$java$awt$Toolkit != null ? class$java$awt$Toolkit : (class$java$awt$Toolkit = class$("java.awt.Toolkit"))).getMethod("getMaximumCursorColors", (Class[])null);
  17.          is1dot2 = var0 != null;
  18.       } catch (NoSuchMethodException var1) {
  19.          is1dot2 = false;
  20.       }
  21.  
  22.       if (is1dot2) {
  23.          System.err.println("warning: running 1.1 version of Utilities");
  24.       }
  25.  
  26.    }
  27.  
  28.    // $FF: synthetic method
  29.    static Class class$(String var0) {
  30.       try {
  31.          return Class.forName(var0);
  32.       } catch (ClassNotFoundException var2) {
  33.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  34.       }
  35.    }
  36.  
  37.    static int drawComposedText(AttributeSet var0, Graphics var1, int var2, int var3, int var4, int var5) throws BadLocationException {
  38.       return var2;
  39.    }
  40.  
  41.    public static final int drawTabbedText(Segment var0, int var1, int var2, Graphics var3, TabExpander var4, int var5) {
  42.       FontMetrics var6 = var3.getFontMetrics();
  43.       int var7 = var1;
  44.       char[] var8 = var0.array;
  45.       int var9 = 0;
  46.       int var10 = var0.offset;
  47.       int var11 = var0.offset + var0.count;
  48.  
  49.       for(int var12 = var0.offset; var12 < var11; ++var12) {
  50.          if (var8[var12] == '\t') {
  51.             if (var9 > 0) {
  52.                var3.drawChars(var8, var10, var9, var1, var2);
  53.                var9 = 0;
  54.             }
  55.  
  56.             var10 = var12 + 1;
  57.             if (var4 != null) {
  58.                var7 = (int)var4.nextTabStop((float)var7, var5 + var12 - var0.offset);
  59.             } else {
  60.                var7 += var6.charWidth(' ');
  61.             }
  62.  
  63.             var1 = var7;
  64.          } else if (var8[var12] != '\n' && var8[var12] != '\r') {
  65.             ++var9;
  66.             var7 += var6.charWidth(var8[var12]);
  67.          } else {
  68.             if (var9 > 0) {
  69.                var3.drawChars(var8, var10, var9, var1, var2);
  70.                var9 = 0;
  71.             }
  72.  
  73.             var10 = var12 + 1;
  74.             var1 = var7;
  75.          }
  76.       }
  77.  
  78.       if (var9 > 0) {
  79.          var3.drawChars(var8, var10, var9, var1, var2);
  80.       }
  81.  
  82.       return var7;
  83.    }
  84.  
  85.    public static final int getBreakLocation(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5) {
  86.       int var6 = getTabbedTextOffset(var0, var1, var2, var3, var4, var5, false);
  87.  
  88.       for(int var7 = var0.offset + Math.min(var6, var0.count - 1); var7 >= var0.offset; --var7) {
  89.          char var8 = var0.array[var7];
  90.          if (Character.isWhitespace(var8)) {
  91.             var6 = var7 - var0.offset + 1;
  92.             break;
  93.          }
  94.       }
  95.  
  96.       return var6;
  97.    }
  98.  
  99.    public static final int getNextWord(JTextComponent var0, int var1) throws BadLocationException {
  100.       Element var3 = getParagraphElement(var0, var1);
  101.  
  102.       int var2;
  103.       for(var2 = getNextWordInParagraph(var3, var1, false); var2 == -1; var2 = getNextWordInParagraph(var3, var1, true)) {
  104.          var1 = var3.getEndOffset();
  105.          var3 = getParagraphElement(var0, var1);
  106.       }
  107.  
  108.       return var2;
  109.    }
  110.  
  111.    static int getNextWordInParagraph(Element var0, int var1, boolean var2) throws BadLocationException {
  112.       if (var0 == null) {
  113.          throw new BadLocationException("No more words", var1);
  114.       } else {
  115.          Document var3 = var0.getDocument();
  116.          int var4 = var0.getStartOffset();
  117.          int var5 = Math.min(var0.getEndOffset(), var3.getLength());
  118.          if (var1 < var5 && var1 >= var4) {
  119.             String var6 = var3.getText(var4, var5 - var4);
  120.             BreakIterator var7 = BreakIterator.getWordInstance();
  121.             var7.setText(var6);
  122.             if (var2 && var7.first() == var1 - var4 && !Character.isWhitespace(var6.charAt(var7.first()))) {
  123.                return var1;
  124.             } else {
  125.                int var8 = var7.following(var1 - var4);
  126.                if (var8 != -1 && var8 < var6.length()) {
  127.                   char var9 = var6.charAt(var8);
  128.                   if (!Character.isWhitespace(var9)) {
  129.                      return var4 + var8;
  130.                   } else {
  131.                      var8 = var7.next();
  132.                      if (var8 != -1) {
  133.                         var1 = var4 + var8;
  134.                         if (var1 != var5) {
  135.                            return var1;
  136.                         }
  137.                      }
  138.  
  139.                      return -1;
  140.                   }
  141.                } else {
  142.                   return -1;
  143.                }
  144.             }
  145.          } else {
  146.             throw new BadLocationException("No more words", var1);
  147.          }
  148.       }
  149.    }
  150.  
  151.    public static final Element getParagraphElement(JTextComponent var0, int var1) {
  152.       Document var2 = var0.getDocument();
  153.       if (var2 instanceof StyledDocument) {
  154.          return ((StyledDocument)var2).getParagraphElement(var1);
  155.       } else {
  156.          Element var3 = var2.getDefaultRootElement();
  157.          int var4 = var3.getElementIndex(var1);
  158.          Element var5 = var3.getElement(var4);
  159.          return var1 >= var5.getStartOffset() && var1 < var5.getEndOffset() ? var5 : null;
  160.       }
  161.    }
  162.  
  163.    public static final int getPositionAbove(JTextComponent var0, int var1, int var2) throws BadLocationException {
  164.       int var3 = getRowStart(var0, var1) - 1;
  165.       int var4 = 32767;
  166.       int var5 = 0;
  167.       Rectangle var6 = null;
  168.       if (var3 >= 0) {
  169.          var6 = var0.modelToView(var3);
  170.          var5 = var6.y;
  171.       }
  172.  
  173.       while(var6 != null && var5 == var6.y) {
  174.          int var7 = Math.abs(var6.x - var2);
  175.          if (var7 < var4) {
  176.             var1 = var3;
  177.             var4 = var7;
  178.          }
  179.  
  180.          --var3;
  181.          var6 = var3 >= 0 ? var0.modelToView(var3) : null;
  182.       }
  183.  
  184.       return var1;
  185.    }
  186.  
  187.    public static final int getPositionBelow(JTextComponent var0, int var1, int var2) throws BadLocationException {
  188.       int var3 = getRowEnd(var0, var1) + 1;
  189.       int var4 = 32767;
  190.       int var5 = var0.getDocument().getLength();
  191.       int var6 = 0;
  192.       Rectangle var7 = null;
  193.       if (var3 <= var5) {
  194.          var7 = var0.modelToView(var3);
  195.          var6 = var7.y;
  196.       }
  197.  
  198.       while(var7 != null && var6 == var7.y) {
  199.          int var8 = Math.abs(var2 - var7.x);
  200.          if (var8 < var4) {
  201.             var1 = var3;
  202.             var4 = var8;
  203.          }
  204.  
  205.          ++var3;
  206.          var7 = var3 <= var5 ? var0.modelToView(var3) : null;
  207.       }
  208.  
  209.       return var1;
  210.    }
  211.  
  212.    static int getPrevWordInParagraph(Element var0, int var1) throws BadLocationException {
  213.       if (var0 == null) {
  214.          throw new BadLocationException("No more words", var1);
  215.       } else {
  216.          Document var2 = var0.getDocument();
  217.          int var3 = var0.getStartOffset();
  218.          int var4 = var0.getEndOffset();
  219.          if (var1 <= var4 && var1 >= var3) {
  220.             String var5 = var2.getText(var3, var4 - var3);
  221.             BreakIterator var6 = BreakIterator.getWordInstance();
  222.             var6.setText(var5);
  223.             if (var6.following(var1 - var3) == -1) {
  224.                var6.last();
  225.             }
  226.  
  227.             int var7 = var6.previous();
  228.             if (var7 == var1 - var3) {
  229.                var7 = var6.previous();
  230.             }
  231.  
  232.             if (var7 == -1) {
  233.                return -1;
  234.             } else {
  235.                char var8 = var5.charAt(var7);
  236.                if (!Character.isWhitespace(var8)) {
  237.                   return var3 + var7;
  238.                } else {
  239.                   var7 = var6.previous();
  240.                   return var7 != -1 ? var3 + var7 : -1;
  241.                }
  242.             }
  243.          } else {
  244.             throw new BadLocationException("No more words", var1);
  245.          }
  246.       }
  247.    }
  248.  
  249.    public static final int getPreviousWord(JTextComponent var0, int var1) throws BadLocationException {
  250.       Element var3 = getParagraphElement(var0, var1);
  251.  
  252.       int var2;
  253.       for(var2 = getPrevWordInParagraph(var3, var1); var2 == -1; var2 = getPrevWordInParagraph(var3, var1)) {
  254.          var1 = var3.getStartOffset() - 1;
  255.          var3 = getParagraphElement(var0, var1);
  256.       }
  257.  
  258.       return var2;
  259.    }
  260.  
  261.    public static final int getRowEnd(JTextComponent var0, int var1) throws BadLocationException {
  262.       Rectangle var2 = var0.modelToView(var1);
  263.       int var3 = var0.getDocument().getLength();
  264.       int var4 = var1;
  265.  
  266.       for(int var5 = var2.y; var2 != null && var5 == var2.y; var2 = var4 <= var3 ? var0.modelToView(var4) : null) {
  267.          var1 = var4++;
  268.       }
  269.  
  270.       return var1;
  271.    }
  272.  
  273.    public static final int getRowStart(JTextComponent var0, int var1) throws BadLocationException {
  274.       Rectangle var2 = var0.modelToView(var1);
  275.       int var3 = var1;
  276.  
  277.       for(int var4 = var2.y; var2 != null && var4 == var2.y; var2 = var3 >= 0 ? var0.modelToView(var3) : null) {
  278.          var1 = var3--;
  279.       }
  280.  
  281.       return var1;
  282.    }
  283.  
  284.    public static final int getTabbedTextOffset(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5) {
  285.       return getTabbedTextOffset(var0, var1, var2, var3, var4, var5, true);
  286.    }
  287.  
  288.    public static final int getTabbedTextOffset(Segment var0, FontMetrics var1, int var2, int var3, TabExpander var4, int var5, boolean var6) {
  289.       int var7 = var2;
  290.       int var8 = var2;
  291.       char[] var9 = var0.array;
  292.       int var10 = var0.offset + var0.count;
  293.  
  294.       for(int var11 = var0.offset; var11 < var10; ++var11) {
  295.          if (var9[var11] == '\t') {
  296.             if (var4 != null) {
  297.                var8 = (int)var4.nextTabStop((float)var8, var5 + var11 - var0.offset);
  298.             } else {
  299.                var8 += var1.charWidth(' ');
  300.             }
  301.          } else {
  302.             var8 += var1.charWidth(var9[var11]);
  303.          }
  304.  
  305.          if (var3 >= var7 && var3 < var8) {
  306.             if (var6 && var3 - var7 >= var8 - var3) {
  307.                return var11 + 1 - var0.offset;
  308.             }
  309.  
  310.             return var11 - var0.offset;
  311.          }
  312.  
  313.          var7 = var8;
  314.       }
  315.  
  316.       return var0.count;
  317.    }
  318.  
  319.    public static final int getTabbedTextWidth(Segment var0, FontMetrics var1, int var2, TabExpander var3, int var4) {
  320.       int var5 = var2;
  321.       char[] var6 = var0.array;
  322.       int var7 = var0.offset + var0.count;
  323.  
  324.       for(int var8 = var0.offset; var8 < var7; ++var8) {
  325.          if (var6[var8] == '\t') {
  326.             if (var3 != null) {
  327.                var5 = (int)var3.nextTabStop((float)var5, var4 + var8 - var0.offset);
  328.             } else {
  329.                var5 += var1.charWidth(' ');
  330.             }
  331.          } else if (var6[var8] != '\n') {
  332.             var5 += var1.charWidth(var6[var8]);
  333.          }
  334.       }
  335.  
  336.       return var5 - var2;
  337.    }
  338.  
  339.    public static final int getWordEnd(JTextComponent var0, int var1) throws BadLocationException {
  340.       Document var2 = var0.getDocument();
  341.       Element var3 = getParagraphElement(var0, var1);
  342.       int var4 = var3.getStartOffset();
  343.       int var5 = Math.min(var3.getEndOffset(), var2.getLength());
  344.       String var6 = var2.getText(var4, var5 - var4);
  345.       if (var6 != null && var6.length() > 0) {
  346.          BreakIterator var7 = BreakIterator.getWordInstance();
  347.          var7.setText(var6);
  348.          int var8 = var1 - var4;
  349.          if (var8 >= var7.last()) {
  350.             var8 = var7.last() - 1;
  351.          }
  352.  
  353.          var1 = var4 + var7.following(var8);
  354.       }
  355.  
  356.       return var1;
  357.    }
  358.  
  359.    public static final int getWordStart(JTextComponent var0, int var1) throws BadLocationException {
  360.       Document var2 = var0.getDocument();
  361.       Element var3 = getParagraphElement(var0, var1);
  362.       int var4 = var3.getStartOffset();
  363.       int var5 = Math.min(var3.getEndOffset(), var2.getLength());
  364.       String var6 = var2.getText(var4, var5 - var4);
  365.       if (var6 != null && var6.length() > 0) {
  366.          BreakIterator var7 = BreakIterator.getWordInstance();
  367.          var7.setText(var6);
  368.          int var8 = var1 - var4;
  369.          if (var8 >= var7.last()) {
  370.             var8 = var7.last() - 1;
  371.          }
  372.  
  373.          var7.following(var8);
  374.          var1 = var4 + var7.previous();
  375.       }
  376.  
  377.       return var1;
  378.    }
  379.  
  380.    static boolean isComposedTextAttributeDefined(AttributeSet var0) {
  381.       return var0 != null && var0.isDefined(StyleConstants.ComposedTextAttribute);
  382.    }
  383.  
  384.    static boolean isComposedTextElement(Element var0) {
  385.       AttributeSet var1 = var0.getAttributes();
  386.       return isComposedTextAttributeDefined(var1);
  387.    }
  388. }
  389.